//通过vue-router插件实现模板路由配置
import { createRouter, createWebHashHistory } from 'vue-router'
import { constantRoute } from './routes'
//创建路由器
const router = createRouter({
  //路由模式hash
  history: createWebHashHistory("/dist"),
  routes: constantRoute,
  //滚动行为
  scrollBehavior() {
    return {
      left: 0,
      top: 0
    }
  }
})
import { useUserStore } from '@/stores/user'
router.beforeEach(async (to) => {
  // 如果没有token, 且访问的是非登录页，拦截到登录，其他情况正常放行
  const useStore = useUserStore()
  //获取token,去判断用户登录、还是未登录
  const token = useStore.token
  //获取用户名字
  const username = useStore.username
  //用户登录判断
  if (token) {
    //登录成功,访问login,不能访问,指向首页
    if (to.path == '/login') {
      return { path: '/' }
    } else {
      //登录成功访问其余六个路由(登录排除)
      //有用户信息
      if (username) {
        //放行
        return
      } else {
        //如果没有用户信息,在守卫这里发请求获取到了用户信息再放行
        try {
          //获取用户信息
          await useStore.userInfo()
          //放行
          //万一:刷新的时候是异步路由,有可能获取到用户信息、异步路由还没有加载完毕,出现空白的效果
          return { ...to }
        } catch (error) {
          console.log(7777);
          
          //token过期:获取不到用户信息了
          //用户手动修改本地存储token
          //退出登录->用户相关的数据清空
          await useStore.userLogout()

          return {
            path: '/login',
            query: { redirect: to.path, data: to.query.item }
          }
        }
      }
    }
  } else {
    //用户未登录判断
    if (to.path == '/login') {
      return
    } else {
      // console.log(to.query.item);

      return {
        path: '/login',
        query: { redirect: to.path, data: to.query.item }
      }
    }
  }
})

export default router
